package cn.hnc.checkapi.controller;

import cn.hnc.checkapi.bean.ConfigType;
import cn.hnc.checkapi.bean.ConfigTypeVo;
import cn.hnc.checkapi.bean.User;
import cn.hnc.checkapi.bean.response.ResponseEntiry;
import cn.hnc.checkapi.logger.WaLogger;
import cn.hnc.checkapi.service.ConfigTypeService;
import cn.hnc.checkapi.service.UserService;
import cn.hnc.checkapi.utils.IpUtil;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigTypeController {
   @Autowired
   private ConfigTypeService configTypeService;
   @Autowired
   private UserService userService;

   @PostMapping({"/checkapi/getAllConfigType"})
   public ResponseEntiry getAllConfigType() {
      ResponseEntiry configTypeResponseEntiry = new ResponseEntiry();

      try {
         List ConfigTypeList = this.configTypeService.selConfigType();
         HashMap result = new HashMap();
         List ElectricalConfigType = new ArrayList();
         List IoConfigType = new ArrayList();
         List ServoConfigType = new ArrayList();
         List NcPanelType = new ArrayList();
         List Checksum = new ArrayList();
         Iterator var9 = ConfigTypeList.iterator();

         while(var9.hasNext()) {
            ConfigType s = (ConfigType)var9.next();
            Map map = new HashMap();
            map.put("id", s.getId());
            map.put("value", s.getValue());
            if (s.getConfigType().equals("ElectricalConfigType")) {
               ElectricalConfigType.add(map);
            } else if (s.getConfigType().equals("IoConfigType")) {
               IoConfigType.add(map);
            } else if (s.getConfigType().equals("ServoConfigType")) {
               ServoConfigType.add(map);
            } else if (s.getConfigType().equals("NcPanelType")) {
               NcPanelType.add(map);
            } else if (s.getConfigType().equals("Checksum")) {
               Checksum.add(map);
            }
         }

         result.put("ElectricalConfigType", ElectricalConfigType);
         result.put("IoConfigType", IoConfigType);
         result.put("ServoConfigType", ServoConfigType);
         result.put("NcPanelType", NcPanelType);
         result.put("Checksum", Checksum);
         configTypeResponseEntiry.setMsgCode(0);
         configTypeResponseEntiry.setMsgDesc("查询成功");
         configTypeResponseEntiry.setData(result);
      } catch (Exception var12) {
         Exception e = var12;
         configTypeResponseEntiry.setMsgCode(1);
         configTypeResponseEntiry.setMsgDesc(e.toString());
         WaLogger.logger.warn(e.toString());
      }

      return configTypeResponseEntiry;
   }

   @PostMapping({"/checkapi/getConfigTypeBy"})
   public ResponseEntiry getConfigTypeBy(@RequestBody ConfigTypeVo configTypeVo) {
      ResponseEntiry configTypeResponseEntiry = new ResponseEntiry();

      try {
         String a = configTypeVo.getConfigType().trim();
         List ConfigTypeList = this.configTypeService.selConfigTypeBy(a, configTypeVo.getValue());
         HashMap result = new HashMap();
         List ElectricalConfigType = new ArrayList();
         List IoConfigType = new ArrayList();
         List ServoConfigType = new ArrayList();
         List NcPanelType = new ArrayList();
         Iterator var10 = ConfigTypeList.iterator();

         while(var10.hasNext()) {
            ConfigType s = (ConfigType)var10.next();
            Map map = new HashMap();
            map.put("id", s.getId());
            map.put("value", s.getValue());
            if (s.getConfigType().equals("ElectricalConfigType")) {
               ElectricalConfigType.add(map);
            } else if (s.getConfigType().equals("IoConfigType")) {
               IoConfigType.add(map);
            } else if (s.getConfigType().equals("ServoConfigType")) {
               ServoConfigType.add(map);
            } else if (s.getConfigType().equals("NcPanelType")) {
               NcPanelType.add(map);
            }
         }

         if (ElectricalConfigType.size() != 0) {
            result.put("ElectricalConfigType", ElectricalConfigType);
         }

         if (IoConfigType.size() != 0) {
            result.put("IoConfigType", IoConfigType);
         }

         if (ServoConfigType.size() != 0) {
            result.put("ServoConfigType", ServoConfigType);
         }

         if (NcPanelType.size() != 0) {
            result.put("NcPanelType", NcPanelType);
         }

         if (ConfigTypeList.size() > 0) {
            configTypeResponseEntiry.setMsgCode(0);
            configTypeResponseEntiry.setMsgDesc("查询成功");
            configTypeResponseEntiry.setData(result);
         } else {
            configTypeResponseEntiry.setMsgCode(1);
            configTypeResponseEntiry.setMsgDesc("查询条件不匹配");
         }
      } catch (Exception var13) {
         Exception e = var13;
         configTypeResponseEntiry.setMsgCode(1);
         configTypeResponseEntiry.setMsgDesc(e.toString());
         WaLogger.logger.warn(e.toString());
      }

      return configTypeResponseEntiry;
   }

   @PostMapping({"/checkapi/getChecksum"})
   public ResponseEntiry getChecksum() {
      ResponseEntiry configTypeResponseEntiry = new ResponseEntiry();

      try {
         String result = this.configTypeService.getChecksum();
         configTypeResponseEntiry.setMsgCode(0);
         configTypeResponseEntiry.setMsgDesc("查询成功");
         configTypeResponseEntiry.setData(result);
      } catch (Exception var3) {
         Exception e = var3;
         configTypeResponseEntiry.setMsgCode(1);
         configTypeResponseEntiry.setMsgDesc(e.toString());
         WaLogger.logger.warn(e.toString());
      }

      return configTypeResponseEntiry;
   }

   @PostMapping({"/checkapi/addConfigType"})
   public ResponseEntiry addConfigType(@RequestBody String json, HttpServletRequest request) {
      String ip = IpUtil.getIpAddr(request);
      ResponseEntiry configTypeResponseEntiry = new ResponseEntiry();

      try {
         ObjectMapper mapper = new ObjectMapper();
         ConfigType configType = (ConfigType)mapper.readValue(json, new TypeReference() {
         });
         User user = this.userService.findFirstByUsername(configType.getUserName());
         if (user == null) {
            throw new Exception("用户不存在");
         }

         List ConfigTypeList = this.configTypeService.selConfigTypeById(configType.getConfigType(), configType.getValue());
         if (ConfigTypeList.size() == 0) {
            this.configTypeService.addConfigType(configType, user, ip);
            configTypeResponseEntiry.setMsgCode(0);
            configTypeResponseEntiry.setMsgDesc("添加成功");
         } else {
            configTypeResponseEntiry.setMsgCode(1);
            configTypeResponseEntiry.setMsgDesc("该数据已存在,添加失败");
         }
      } catch (Exception var9) {
         Exception e = var9;
         configTypeResponseEntiry.setMsgCode(1);
         configTypeResponseEntiry.setMsgDesc(e.toString());
         WaLogger.logger.warn(e.toString());
      }

      return configTypeResponseEntiry;
   }

   @PostMapping({"/checkapi/updateConfigType"})
   public ResponseEntiry updateConfigType(@RequestBody String json, HttpServletRequest request) {
      String ip = IpUtil.getIpAddr(request);
      ResponseEntiry configTypeResponseEntiry = new ResponseEntiry();

      try {
         ObjectMapper mapper = new ObjectMapper();
         ConfigType configType = (ConfigType)mapper.readValue(json, new TypeReference() {
         });
         User user = this.userService.findFirstByUsername(configType.getUserName());
         if (user == null) {
            throw new Exception("用户不存在");
         }

         List ConfigTypeList = this.configTypeService.selConfigTypeById(configType.getConfigType(), configType.getValue());
         if (ConfigTypeList.size() == 0) {
            int a = this.configTypeService.updateConfigType(configType, user, ip);
            if (a == 0) {
               configTypeResponseEntiry.setMsgCode(1);
               configTypeResponseEntiry.setMsgDesc("被修改的数据不存在，修改失败");
            } else {
               configTypeResponseEntiry.setMsgCode(0);
               configTypeResponseEntiry.setMsgDesc("修改成功");
            }
         } else if (ConfigTypeList.size() == 1) {
            configTypeResponseEntiry.setMsgCode(1);
            configTypeResponseEntiry.setMsgDesc("修改后的数据已存在，修改失败");
         } else {
            configTypeResponseEntiry.setMsgCode(1);
            configTypeResponseEntiry.setMsgDesc("参数类型有误");
         }
      } catch (Exception var10) {
         Exception e = var10;
         configTypeResponseEntiry.setMsgCode(1);
         configTypeResponseEntiry.setMsgDesc(e.toString());
         WaLogger.logger.warn(e.toString());
      }

      return configTypeResponseEntiry;
   }

   @PostMapping({"/checkapi/delConfigType"})
   public ResponseEntiry delConfigType(@RequestBody String json, HttpServletRequest request) {
      String ip = IpUtil.getIpAddr(request);
      ResponseEntiry configTypeResponseEntiry = new ResponseEntiry();

      try {
         ObjectMapper mapper = new ObjectMapper();
         ConfigType configType = (ConfigType)mapper.readValue(json, new TypeReference() {
         });
         User user = this.userService.findFirstByUsername(configType.getUserName());
         if (user == null) {
            throw new Exception("用户不存在");
         }

         int result = this.configTypeService.delConfigType(configType, user, ip);
         if (result == 0) {
            configTypeResponseEntiry.setMsgCode(1);
            configTypeResponseEntiry.setMsgDesc("删除失败,没有此数据");
         } else {
            configTypeResponseEntiry.setMsgCode(0);
            configTypeResponseEntiry.setMsgDesc("删除成功");
         }
      } catch (Exception var9) {
         Exception e = var9;
         configTypeResponseEntiry.setMsgCode(1);
         configTypeResponseEntiry.setMsgDesc(e.toString());
         WaLogger.logger.warn(e.toString());
      }

      return configTypeResponseEntiry;
   }
}
